|
التحكم من جوال أو ثابت الى ثابت
|
|
|
ما
يجب معرفته عن التلفون الثابت.
عندما تكون السماعه مغلقه يجري في الخط تيارا
مباشرا وقدره 48 فولت تقريبا و عندما ترفع حوالي 8 فولت تقريبا , اما كمية التيار فهي قليله جدا
بحوالي 20 ميليأمبير.
يرن الجرس في التلفون , عندما السنترال ترسل عبر الخط تيارا مترددا
بجهد 90 فولت 20 هيرتس تقريبا وتيار 25 ميليأمبير.
ما هي الشيفره التي يرسلها
تلفوني ليفهم السنترال الرقم الذي طلبته .؟
يستعمل النغمات ( نعم الأصوات)
فكل زر تظغط عليه يحدث نغم وأنت تسمعه ( توت , تات
, تين الخ ) وكل نغم مركب من ذبذبتين صوتيتين حسب الجدول التالي .
|
|
|
|

|
DTMF -
Coding Frequencies
|
|
Digit to be
Encoded
|
Low Frequency
Values (Hz)
|
|
Digit to be
Encoded
|
1
|
2
|
3
|
A
|
697
|
|
4
|
5
|
6
|
B
|
770
|
|
7
|
8
|
9
|
C
|
852
|
|
*
|
0
|
#
|
D
|
941
|
|
High Frequency
Values (Hz)
|
1209
|
1336
|
1477
|
1633
|
|
|
|
|
مشروعنا عباره عن دائره متكامله
تعرف متى يرن جرس التلفون فتقوم بفتح الخط والإنتظار لمدة عشر ثواني خلال
هذا الوقت وبينما الخط مفتوح فاذا ظغط على زر من الطرف الآخر فإن دائرتنا
تتعرف على الرقم وبناء عليه تفتح أو تغلق
مُرحلا للتحكم بما نريد.
إذا مرة العشر ثواني أغلق الخط اوتوماتكيا , قلب المشروع هو المتحكم الصغير , وهذا يفتح
امامنا مجالات لا نهاية لها , فمثلا يمكننا إدخال كلمة سر الخ .
|
|
|
|
إلتقاط وعزل إشارة الجرس
|

|
|
|

|
C 1 470 nF 250V AC
R1
10 kohm 1W
D1,D2
10-20V zener دايود
قدرة400 mW
D3
1N4148 diode
U1 4N27 عازل
ضوئي
|
|
|
|
|
الخطان
الأحمر والأخضر توصل مباشرة على خط التلفون ,
المكثف C1 مهمته عزل التيار المباشر
ويسمح
فقط بمرور التيار المتردد , دايودات الزنر
والمقاومه موضوعه بشكل تخفف من جهد
التيار
وتأقلمه بشكل أنها عندما يرن الجرس يظيئ الصمام الثنائي المضيئ الموجود
بداخل العازل
الضوئي , (
وهذا الأخير عمله شبيه للمُرحل ) فيتحكم بأي داره موصوله في الطرف الآخر
موصوله
على الطرف 4 و 5
الطرف 6 يبقى طليقا في الهواء.
بذلك
أصبحت لدينا الدائره , التي سترسل بيت 1 الى
المتحكم الصغير لتخبره برنين الجرس و 0
عندما
يتوقف .
بعيدا
عن موضوعنا : بهذه الدائره مع مُرحل بإمكانك عمل
دائره تستبدل بها رنين الجرس
بإظائة
لمبه . لعدم إزعاج الأطفال النائمين أو في أماكن
الموسيقى العاليه . كل ما تريد
لنرى
دائره أخرى تقوم بنفس الغرض.
|
|
|
|

|
C1 470 nF 250V AC
R1 10 kohm 1W
D1 10-20V zener diode 400 mW power rating
RECT1 Rectivifier bridge 200V voltage,0.1 current
U1 4N27 or CNY17 optoisolator
|
|
|
|
|
الآن
إنتهينا من موضوع التقاط اشارة الجرس , فنحن بحاجه
الى دائره , تفهم النغمات الصوتيه
المركبه
من ذبذبتين والتي تسمى بشيفرة DTMF وتعيدها الى حالتها
الأساسيه أي أرقام نفهمها
من
الصفر الى التسعه . والهدف
من ذلك عندما نضغط على رقم من هاتف بعيد مشروعنا هنا يفهم
الرقم . وأفضل دائره تقوم بهاذا العمل هي دائرة
الشريحه الإلكترونيه IC وهو MT88L70
|
|
|
|
|
|
|
|
إذا
ضغط على زر أو Key واحد سيظهر لنا 0001 وكل ما تبقى حسب ما هو ظاهر في الجدول
ما يهمنا
من هذه الدائره قد إنتهينا منه , ولكن بالمناسبه
يمكننا بناء دائره تكشف لنا الأرقام التي
تمرك
على التلفون بقليل من القطع وهذا هيكلها البياني .
|
|
|
|
|
|
أصبحنا
نعرف متي يرن الجرس ونحسن إستخدامه في دائرتنا ,
كذلك الأمر نستطيع فك شيفرة
الأرقام ومعرفتها , وسؤالنا كيف سنفتح الخط
لنجاوب ؟ من سيرفع لنا السماعه ؟ وإذا كان
تحكما عن بعد , معنى ذلك أن لا أحد قرب
الدائره , اليك الحل .........
|
|
|
|
|
|
عندما
نرفع السماعه, تتغير المقاومه الموجوده داخل دوائر جهاز التليفون, وبذلك
يعرف السنترال
انه
فتح الخط , وحلنا يكمن بوضع مقاومه متوازيه مع
خطوط التلفون بقدر 560 أوم لتقوم بنفس
العمل .
ونتحكم بها من خلال مُرحل أو ريلاي , وهذا الأخير
يتحكم به الميكروكونترولير ( أي برنامجنا)
فالنرسم
هذه الدائره .
|
|
|
|
|
|
الترانسيستور
في الدائره أعلاه يعمل كمفتاح , فعندما يرسل
الميكرو بيت 1 إلى قاعدة الترانسيستور
هذا
الأخير يسمح بمرور التيار في ملف المُرحل فتغلق دائرة خطوط التلفون , فيفهم السنترال أن
المكالمه
قد بدأت.
ما
ينقصنا الآن هو دائرة ما نريد التحكم به . ( راديو , تلفزيون , مروحه ..... الخ) وهذا أيضا من
خلال
ريلاي وأعتقد أنك أصبحت خبيرا في أمور الريلاي. لنرى الدائره إذا....
|
|
|
|
|
|
ما
نريد من دوائر جانبيه, إنتهينا منه , الآن نريد
العقل المدبر , الذي يسمع الجرس فيفتح الخط
وينتظر
عشر ثواني إذا الرقم خمسه شغل المروحه مثلا وإذا سته أطفأها وإذا لم يستلم
شيئ ومرت
العشر
ثواني أغلق الخط وأنهى المكالمه كأن شيئا لم يحدث.
العقل
المدبر هو المحترم , الصديق الوفي الميكرو pic
16f84 , أول عمل سنقوم به هو توزيع
المهمات
لكل بين ( رجل )
|
|
|
|
|
|
سنخصص
الطرف 1 ( منفذ A , 2 أو PortA,2
أو بإختصار pa,2 ) للتحكم
بالريلاي الذي
يفتح
ويغلق الخط .
سنخصص
الطرف 12 ( pb,6 ) للتحكم بالريلاي الذي يشغل أو يطفئ المروحه مثلا أو ما تريد
سيقرأ
الميكرو الرقم الثنائي المكون من أربعه بيت والذي يعطينا إياه ال 8870 بالوصل المباشر
بين
الأرجل (طرف) على الشكل التالي
6,7,8,9,
في
الميكرو
14,13,12,11
في
8870
فاتني
أن أخبرك شيئ مهم عن 8870 هو أن هذه الدائره المتكامله تخبرنا من خلال الطرف
15
( STD ) أنه
قام بإستلام رقم ما , فيظهر في هذا الطرف البيت
واحد.
وهذه
الميزه الجيده سنستعملها في الميكرو بوصل هذا الطرف بالطرف رقم عشره ( ( pb,4
هذا
كل ما قررناه من توصيلات إذا فالنجمع هذه الدوائر بدائره واحده.
|
|
|
|
|
|

|
|

|
|
صديقي
العزيز : لا شك أن شكل دائرتنا تغير , أكملنا
دائرتي الريلاي ووضعنا لها بهاراتها وأنا أسمي
بهارات
( المقاومه والتراسيستور والدايود التابع لكل دائره )
قمنا
بألإمدادات الكهربائيه , بواسطة بطاريه 9 فولت ,
وهذا لصالحنا لأنها متوفره في الأسواق ,
والأهم
من ذلك أننا إستطعنا إستخلاص جهدين مختلفين +9 نستعمله لتغذية ملف الريلاي و
+5
هو
ما يحتاجه الميكرو وال 8870 كل ذلك تم بإدخال 7805 على الدائره
.
بقي لنا , إضافة دائرة الجرس , وبهارات الميكرو وال 8870 ,
أصبحت تعرف ما أقصد؟ نعم
( الكريستال , والمكثفات , والمقاومات )
|
|
|
|
|
|
ألحمد
لله إنتهينا من جمع الدوائر بدائره واحده ,
النقطتان الكبيرتين الحمراء والخضراء وبينهما كلمة
تلفون
يوصل عليهما خط التلفون .
إني
عرضت دائرتين لرنين الجرس فإخترت الثانيه والتي تستعمل جسر الدايود . ففي الصوره هذه
الدائره
موضوعه في مربع أخضر , أما مواصفات القطع يمكن
أخذها من الدائره التي عرضتها
وصلنا
هذه الدائره بترانسيستور كمفتاح
طريقة
جمعنا هذه ورسمها من خلال باينت ( برنامج رسم ويندوس ) كان لتجميع الفكره
والتوضيح
فنظريا
الدائره مكتمله ويجب أن تعمل على أحسن شكل .
هدفي
أن نتعلم سويا هذا العلم الرائع , فهو ليس إحتكارا
لأحد . فإذا أردت القيام بهذه الدائره فهناك
العديد
من البرامج الخاصه لرسم وصنع الدوائر . يمكنك الدخول
عبر رابط مواقع عربيه صديقه الى
منتديات
البحرين وستجد العديد من هذه البرامج .
فإذا
فعلت أخبرنا بما جد معك . لأنني سأفرغ وقتي الآن
الى برنامج الميكرو.
|
|
|
|
|
|
;التحكم عن بعد
تلفونيا
|
|
; لفهم
البرنامج بشكله الصحيح يجب أن تكون قد درست ما ذكرناه عن الميكرو في
الموقع وعلى كل
|
|
; سأكون
أكثر وضوحا وشرحا هنا معتبرا هذا البرنامج كتطبيق وتوضيح لما تعلمناه فهذا سيكون بعون الله
|
|
; أكثر
البرامج وضوحا , سنستعمل الأم بي
لاب لكتابة برنامجنا , وهذا الأخير عباره عن وسيط بينك وبين
|
|
; الميكرو
, فما يسجل في الميكرو وما يفهمه هو النظام الرقمي السادس عشري أو هيكس ( القي نظره على
|
|
; درسنا
الأنظمه الرقميه) ولكن طبيعة الإنسان أسهل عليه حفظ التعاريف والكلمات كحفظ
الأرقام وخاصة في
|
|
; غير نظام أرقامنا العشريه فلذلك أنت تتعلم
التعريفات والأوامر بلغة أسمبلير الخاصه بالميكرو والأم بي لاب
|
|
; يقدم
لك الخدمه والمعروف بتحويلها الى هيكس
( كثر الله خيره أليس كذلك ؟ ) وله حسنات منها أنه يعتبر كل
|
|
; ما
يكتب بعد فاصله وفوقها نقطه ( كهذا الذي نكتبه الأن ) كلام بلا طعمه ولا دخل
له بالبرنامج فلا يحوله
|
|
; وهو
بحاجه الى مساعدتك فما يريد منك فثط أن تختار نوع الميكرو لأنه صنع ليبرمج
أنوعا عديده من الميكرو
|
|
; يا
أخي قل له ما ستخسر ؟ .....كيف كيف كيف ......؟؟؟؟؟؟؟
.... طيب سأقول لك يجب أن يتضمن برنامجك
|
|
;
LIST p= 16f84 كلمة
|
|
; وضمن
أدوات التحكم هناك خانه خاصه تختار بها هذا الميكرو كذلك الساعه التي
ستختارها ونحن إخترنا
|
|
;لمشروعنا
الكريستاك 4 ميغاهيرتس ( راجع
درسنا الأم بي لاب )
|
|
; طيب
عال وغيره ؟
|
|
; 16f84.inc الأم ب لاب يحمل ملف إسمه
|
|
; إذا فتحت هذا
الملف فستجد أنه عباره تعريفات لكل السجلات و البيتات المؤلفه منها
والموجوده داخل هذا الميكرو
|
|
;
porta equ 05h
مثلا فستجد
|
|
; وهذا
معناه أن الأم ب لاب يقول لنا ... يا سيدي أكتب برنامجك كما تريد ... ولكني
أعدك أنني أينما أجد كلمة
|
|
; porta
|
|
; 05h سأحولها الى الرقم
|
|
; كثر
الله خيرك فهو ما يفهمه الميكرو ببورت أ
|
|
; include “
p16f84.inc”لا شكر على
واجب ولكن يجب أن يتضمن برنامجك هذا الملف... كيف ؟ أكتب
|
|
; قيقول
لنا الأم ب لاب محذرا .. ولكن إعلم أنك يجب أن
تستخدم التعريفات كما هي ظاهره في الملف فكلمة
|
|
; porta
|
|
; يجب
أن تكتب كما هي , وإلا ما بحولها والسماء زرقاء , فتروح تتفنن وتكتبلي
|
|
; para , pta, PORTA,
|
|
; طيب
يا أخي يا أم بي لاب , كفاك تهديدا , فأنا لا زلت مبتدأ , أنا هاوي مش مهندس
الكترونيات , ما شاء الله
|
|
; عليهن
, رفعو راس هالأمه بزكاهم وتواضعهم
وعدم أنانيتهم , شو بدي إحكيلك لإحكيلك يا أم ب لاب فتراه
|
|
; ينحني
خجلا , وكأنه عرفني بأنني عربي , ويقول طيب يا أخي , ضع التعريفات كما تريد
, واحده تلو الأخرى
|
|
; p16f84.inc مما تريد إستعماله وتركلي
على جنب موضوع
|
|
; ما رأيكم ؟ طيب سنضع
التعريفات على ذوقنا
|
|
; يناديني
الأم ب لاب على جنب ويقول ( منذ ساعه وأنت تكتب كلام , كما قال أبو عنتر
مالو فكاهه ولا مازيه
|
|
; ......شو رأيك تعلم الشباب بالمناسبه كيفية
إستعمال الذاكره الدائمه إإبروم فتخزن حالة المروحه إذا كانت تعمل
|
|
; أم
واقفه ) والله فكره حلوه يا أم بي لاب وسنعمل بها
|
|
; فيجاوب
الأم ب لاب يالله إبدأ وخلصني
طفرتني
|
|
; طيب
كما تريد أنهينا النقطه والفاصله
|
|
; خذ
شيئا يعجبك
|
|
List p = 16f84
|
|
|
|
Stat equ 03h ; كلمة ستاتوس كبيره وبدي غيرها بستات
|
|
Mona equ 05h ; كلمة
بورت أ لم تعجبني بدي من أ يعني منفذ أ
|
|
Monb equ 06h ; منثذ ب
|
|
Taw equ 0dh ;
سجل إخترته من الذاكره رام وسأستعمله
في عملية التوقيت
|
|
Taw1 equ 0eh ;
كذلك آخر للتوقيت
|
|
Ta7a equ 0fh ; سجل
إخترته للتحكم
|
|
Ma3 equ 10h ; معلومه
|
|
Dad1 equ 11h ; عداد
واحد
|
|
Dad2 equ 12h ; عداد 2
|
|
|
|
|
|
; طيب
يا حسن علي , سجل ستاتوس موجود في ملف إنك فعرفته كما هو موجود ك صفر تلاثه
هيكس
|
|
; وغيرته
على ذوقك بستات فهمنا , كذلك الأمر فعلت ببورت أ وبورت ب كذلك الأمر فهمنا موجودين
|
|
; Taw ,
Taw1 , Ta7a , Ma3 , Dad1, Dad1 تعريفاتها من
أين لك هذه السجلات وكيف إكتشفت
|
|
; يا
صديقي المحترم , تذكر ما درسناه عن الميكرو , فنحن نشرنا خارطة ذاكرة
الميكرو وموقع السجلات
|
|
; أنظر
نفس الصوره تحت , فهناك 68 سجل من ذاكرة رام تستخدمها أنت كمبرمج لما
تريد وعنوانها من
|
|
; 0ch - 4fh
|
|
; فيمكنك
أن تسمي السجل كما تريد وتُعرفه
بالعنوان الذي تختاره ضمن هذه الحدود وهذا ما فعلت
|
|
|
|
|
|
Eedata equ 08h سجل
معلومات
|
|
Eeadr equ 09h سجل عناوين
|
|
econ1 equ 88h ;eeprom سجل تحكم
|
|
econ2 equ 89h ; eeprom سجل
تحكم
|
|
Trisa equ 85h
|
|
Trisb equ 86h
|
|
Z equ 02h
|
|
C equ 00h
|
|
W equ 00h ;w بهذا نؤشر الى أن النتيجه تضع في
|
|
S equ 01h ; بهذا نأمر ان تضع النتيجه في السجل
|
|
;eecon1 الآن سنعرف أو نوازي البيتات الخاصه بسجل
|
|
Eeif equ 04h
|
|
Wrr equ 03h
|
|
Wen equ 02h
|
|
Wr equ 01h
|
|
Rd equ 00h
|
|
; طيب
من التعريفات أو وضع الموازات وأعلم كمبتدأ أنه لك العديد من الأسأله وهذا
ما وقعت به
|
|
; أنا شخصيا
الرد على تساؤلاتك في هذا الجدول فالتقطه
|
|
|
|
06h
|
PORTB
|
RB7
|
RB6
|
RB5
|
RB4
|
RB3
|
RB2
|
RB1
|
RB0
INT
|
|
07h
|
|
غير مزوع , لا وجود له
|
|
08h
|
EEDATA
|
EEPROM سجل معلومات
|
|
09h
|
EEADR
|
EEPROM سجل عناوين
|
|
0A
|
PCLATH
|
|
|
|
PC الخمسه بيت الأكثر
ثقلا من
|
|
OB
|
INTCON
|
GIE
|
EEIE
|
T0IE
|
INTE
|
RBIE
|
T0IF
|
INTF
|
RBIF
|
|
1 بنك
|
|
80h
|
INDF
|
FSR عنوان(ولا يعتبر كسجل موجود)
|
|
81h
|
OPTION
|
RBPU
|
INTE
|
T0CS
|
T0SE
|
PSA
|
PS2
|
PS1
|
PS0
|
|
82h
|
PCL
|
PC الثمانيه بيت الأخف من
|
|
83h
|
STATUS
|
IRP
|
RP1
|
RP0
|
TO
|
PD
|
Z
|
DC
|
C
|
|
84h
|
FSR
|
مصوب للتوجيه الغير مباشر
|
|
85h
|
TRISA
|
|
|
|
عنوان
معلومات بورت أ
|
|
86h
|
TRISB
|
عنوان
معلومات بورت ب
|
|
87h
|
|
غير مزروع
|
|
88h
|
ECON1
|
|
|
|
EEIF
|
WRR
|
WEN
|
WR
|
RD
|
|
89h
|
ECON2
|
EEPROM ثاني سجل للتحكم ب
|
|
0Ah
|
PCLATH
|
|
|
|
PC الخمسه بيت الأكثر ثقلا من
|
|
0Bh
|
INTCON
|
GIE
|
EEIE
|
T0IE
|
INTE
|
RBIE
|
T0IF
|
INTF
|
RBI
|
|
|
|
طيب
يا حسن علي إنتهيت من وضع الموازات.... ولكن كان أسهل لك بأت تكتب include 16f84.inc
وبلا وجع هالراس , ....
لا تنسى أننا نقدم هنا شرحا مفصلا فيه كل صغيره وكبيره
للشباب ...
|
|
|
|
طبق البرنامج من هنا
في حال حدوث (إعادة إنضباط
) Org 00 ; reset
|
|
Goto
bidayah; إذهب الى السطر الذي تجد أمامه كلمة بدايه
|
|
; الآن
نحن بحاجه إلى عدة سوب روتينات لنستعملها في برنامجنا
..... ما هذه ومن أين أتيت بها
|
|
; الريست
والسوب روتين مشروحه في الموقع ولأذكرك السوب روتين عباره عن برنامج صغير
داخل
|
|
; البرنامج
العام تبدأ بإسم السوب روتين وتنتهي بكلمة ريتارن أي عد.......سبحان الخلقك
والله فهمتني ...
|
|
; طيب
يا أخي أنظر كيف سنعمل عدة سوبروتينات نحتاجها في برنامجنا
..ولعلمك الحق علي أنا ..
|
|
; لطول
لساني وعدت أن أكتب في ال إإبروم وهي الذاكره الدائمه يعني وكأنك تكتب في
القرص الصلب
|
|
;الهارد ديسك ... ما قصدك صعبت عليك المهمه ؟ لا لا باطل
... أبو الميكرو ومن إخترعه ..عربي أنا
|
|
; أنظر
كيف سنضع ثلاث سوب روتينات متعلقه في هذا الموضوع بالتحديد هناك أسلوب معين
لقرائة
|
|
; ال
إإبروم فسنضع ذلك في سوب روتين ونسميه قرائه كذلك الأمر آخر ونسميه كتابه ,
وأنا أعلم أن
|
|
;عملية
الكتابه هذه تستغرق وقتا أكثر منه ذاكرة رام فيجب أن أكتب سوب روتين ثالث ينتظر حتى
|
|
;تنتهي الكتابه ويعلمني بذلك وسأسميه استنا . لنرى ما سيحدث
|
|
Kira bsf stat,5 ; إذهب الى البنك الثاني
|
|
Bsf econ1,rd ; ضع
البيت الذي يبدأ القرائه
|
|
Bcf stat,5 ; إرجع الى البنك الأول
|
|
Movf eedata,w ;W
حرك إإداتا وضعها في
|
|
Return ; إرجع
|
|
; ما
رأيك إنتهينا ..... لنحاول سوبروتين الكتابه
|
|
Kitab bsf stat,5 ; روحلي
على ثاني بنك
|
|
Bsf econ1,wrr ; ضع
بيت تقبل الكتابه ...يالله
|
|
Bcf econ1,eeif ; ضع
العلم صفر , تأكد لي من ذلك
|
|
; الأوامر
الخمسه التاليه هي إجباريه , بأوامر من ميكروتشيب الشركه المصنعه
|
|
Movlw 55h
|
|
Movwf econ2
|
|
Movlw aah
|
|
Movwf econ2
|
|
Bsf econ1,wr ; ضع بيت الكتابه لكي تبدأ
|
|
; إنتهت
السوب روتين ولم نضع كلمة ريتارن لأننا نريد أن نتواصل مع سوب روتين
الإنتظار التي تليها
|
|
Stana clrwdt
|
|
Btfss econ1, eeif ; إسأل هل
إنتهت عملية الكتابه
|
|
Goto stana ; إذا لا إنتظر
|
|
Bcf econ1,eeif ; إذا
نعم إمحي علم نهاية الكتابه
|
|
Bcf econ1,wen ;
وقف لا تعود تتقبل كتابات
|
|
Bcf stat,5 ; عد
الى البنك الأول
|
|
Return ; إرجع وخلصنا
|
|
|
|
الوقت ,
كيفية التحكم به , هو أهم ما يجب على المبرمج معرفته , ففي برنامجنا هذا
مثلا إستخدمنا كساعه الكريستال 4 ميغاهيرتس يعني أربع ملايين دوره في
الثانيه , وسرعة تطبيق الأوامر عباره عن ربع سرعة الساعه أي مليون أمر في
الثانيه , ما رأيك ؟ طياره.... بل أسرع من الصاروخ والرصاص
, الميكرو يطبق مليون أمر في الثانيه.... أي أن كل أمر بحاجه الى
ميكروثانيه ليطبق , وهناك أوامر بحاجه الى 2
ميكروثانيه سنشرحها . المهم نضع سوب روتين للتحكم بالوقت وستكون بهذه الطريقه , نحن نعلم أن 8870 بحاجه الى توقيتات من
ميليثواني وليس ميكرو .... إذا لنضع سوب روتين توقيت ميليثانيه
|
|
|
|
Milith movwf taw ; سجل
تاو سيحمل عدد الميليثواني التي نريدها
|
|
Fawk1 movlw D´110´ ; w حرك الرقم العشري مئه وعشره الى
|
|
Movwf taw1 ;ضع
الرقم مئه وعشره في هذا السجل
|
|
Fawk2 nop : لا تعمل شيئا
|
|
nop
|
|
nop
|
|
nop
|
|
clrwdt
|
|
nop
|
|
Decfsz taw1 ; نزل
واحد وإذا وصلت للصفر أقفز أمر
|
|
Goto fawk2
|
|
Decfsz taw
|
|
Goto fawk1
|
|
Return
|
|
|
|
يا
صديقي يا حسن , وضح لي هذه السوب روتين أكثر
, لنفهمها .... على راسي يا محترمين .... شوف عيني
....إفترض نحنا بدنا توقيت عشر ميليثواني ... نحمل
في سجل W الرقم
عشره ثم نذهب الى سوب روتين milith فما سيحدث , سيحمل هذا الرقم في سجل taw معي لهنا
جيد جدا ....الآن سيحمل الرقم العشري مئه وعشره في
سجل taw1 كذلك واضح ....جيد
....بعدها يأتي أربع أوامر متتاليه nop
ومعناها no operation لا تعمل شيئ , فعلا هذا
الأمر لا فائده عمليه منه , فالميكرو لا يعمل شيئ , ولكنه يستهلك ميكرو
ثانيه من الوقت , وضعنا أربعة أوامر nop فتمر أربعه ميكروثانيه من الوقت ....
جيد
....بعدها يأتي أمر
clrwdt كذلك
الأمر لا يؤخر ولا يقدم بل يستهلك ميكروثانه ... وبعده nop ميكروثانيه
أخرى .... فأصبح لدينا حتى الآن ستة ميكروثانيه قد
مرت .... يأتي بعدها الأمر decfsz فهذا الأمر يستهلك ميكروثانيه ,
فأصبح لدينا سبعه .... الأمر goto الذي يليه يستهلك 2
ميكروثانيه مجموع تسعة ميكروثواني ....
المهم
في هذا الترتيب حتى الآن ...taw1 أنه أصبح
مئه وتسعه والأمر goto سيذهب بنا الى fawk2 مجددا , ويبقى البرنامج
يتراوح بين goto و fawk2 حتى يصبح
سجل taw1 صفر , وهذا يحدث بعد مئه وعشر دورات .
ففي
كل دوره تمر تسعة ميكروثانيه .....ففي المئه وعشر
دورات تكون قد مرت تسعمئه وتسعين ميكروثانيه أي تقريبا ميليثانيه واحده ..... أعتقد واضح وضوح الشمس ....
نحن
أردنا عشر مليثواني ... فالأوامر التي تلي تنقص
واحد من سجل taw الذي
يحمل عدد الميليثواني وتعاد الكره حتى تمر العشره ميليثانيه .
|
|
|
|
حتى
الآن شرحنا كافي ووافي , ولكن خلال عملية الشرح ,
تفرق برنامجنا كثيرا , وأدخلنا صور وغيره , كذلك لن ننسى تهديد الأم ب لاب ,
بأن لا نخطأ بين حرف كبير وحرف صغير , آن الأوان لنحل هذه المشاكل , سنجمع
ما كتبناه بدون شرح وسنحول كل الكلمات إلى حرف كبير . وبعدها نكمل .
|
|
|
|
إضغط هنا من فضلك
|